import os
from src.predict import model_predict
from src.train import PowerLoadModel, analysis_data, data_processing, model_train

if __name__ == '__main__':
    """主程序流程：训练模型 -> 预测测试集"""
    # 1. 配置训练数据路径
    train_data_path = os.path.join('../data', 'train.csv')

    # 2. 初始化模型实例（加载数据和日志）
    train_model = PowerLoadModel(train_data_path)
    logger = train_model.logfile
    logger.info("=======开始模型训练流程=======")

    # 3. 数据分析（评估特征相关性）
    analysis_data(train_model.data_source, logger)

    # 4. 特征工程（训练模式，生成scaler）
    x_train, y_train, scaler = data_processing(
        data=train_model.data_source,
        logger=logger,
        is_train=True  # 训练模式：拟合标准化器
    )

    # 5. 模型训练与调优（传入scaler用于保存）
    model_train(x_train, y_train, scaler, logger)

    # 6. 使用训练好的模型预测测试集
    model_predict('test.csv')

    logger.info("=======全流程结束=======")